home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2010 April
/
PCWorld0410.iso
/
pluginy Firefox
/
2109
/
2109.xpi
/
chrome
/
febe.jar
/
content
/
febeProfile.js
< prev
next >
Wrap
Text File
|
2009-10-13
|
16KB
|
446 lines
// author: Chuck Baker
// contact: febe@customsoftwareconsult.com
// Version 6.3
var febeProfileService = Cc["@mozilla.org/toolkit/profile-service;1"].getService(Ci.nsIToolkitProfileService);
febeProfileWin = this.window.document;
function febeProfileWindowInit(){
if(!febeInitDir()){return false;}
febeSetMsgs();
var prefName = "extensions.febe.restoreToProfilePath";
febePrefs.setCharPref(prefName,""); // Full path to backed up profile
var prefName = "extensions.febe.restoreProfileFromBackupName";
var febePrName = febeMsg[293];
febePrefs.setCharPref(prefName,febePrName);
var prefName = "extensions.febe.restoreToProfileName";
var febePrName = febeMsg[295];
febePrefs.setCharPref(prefName,febePrName);
febeSetRestoreProfileHeader();
febeBuildProfileList();
febeProfileCreated = 0;
febeProfileIndex = -1;
febeProfileBackupIsSelected = false;
febeProfileDestinationIsSelected = false;
febeProfileRestoreSanityCheck();
}//febeProfileWindowInit()
function febeSetRestoreProfileHeader(){
febeProfList = febeGetProfileList();
febeProfileWin.getElementById("febeCurrentProfileText").value = febeProfName ;
var prefName = "extensions.febe.restoreProfileFromBackupPath";
var febePathName = febePrefs.getCharPref(prefName); // Full path to backed up profile
var prefName = "extensions.febe.restoreProfileFromBackupName";
var febePrName = febePrefs.getCharPref(prefName);
if(febeIsOnlineBackup){
febeProfileWin.getElementById("febeSelectedProfileText").value = febePrName + " "+ febeMsg[304];
}else{
febeProfileWin.getElementById("febeSelectedProfileText").value = febePrName;
}//if
var prefName = "extensions.febe.restoreToProfileName";
var febePrRestName = febePrefs.getCharPref(prefName);
febeProfileWin.getElementById("febeDestinationProfileText").value = febePrRestName;
return true;
}//febeSetRestoreProfileHeader()
function febeBuildProfileList(){
// Clear existing items
var theTree = document.getElementById("febeProfileList");
var children = theTree.childNodes;
var n = children.length;
for (var i = 0; i < n; i++) {
theTree.removeChild(children[0]);
}//for
var files = Cc["@mozilla.org/file/directory_service;1"]
.getService(Ci.nsIProperties)
.get("DefProfRt", Ci.nsIFile);
var dfltProfile = files.path;
for(var i = 0; i < febeProfList.length; i++){
var rootPath = febeProfList[i].rootDir.path;
var item = febeProfileWin.getElementById("febeProfileList")
.appendItem (febeProfList[i].name,rootPath)
if(item.label == febeProfName ){item.disabled = true;}
item.setAttribute("tooltiptext",febeMsg[286]+" "+rootPath);
if(rootPath.indexOf(dfltProfile) == 0){
item.setAttribute("style","color: green;"); // Default directory
}else{
item.setAttribute("style","color: purple;"); // Non-default directory
}//if
}//for
febeProfileWin.getElementById("febeProfileList").selectedIndex = -1; // Clear selected item
if(febeProfList.length == 1){ // If there is only one profile, display help message
var d = febeProfileWin.getElementById("febeRestoreID").value;
febeHelp('99',d);
febeProfileDestinationIsSelected = true;
febeProfileRestoreSanityCheck();
return false;
}//if
if(febeProfileCreated > 0){ // If new profile was created, select it
febeProfileWin.getElementById("febeProfileList").selectedIndex = febeProfileCreated;
febeProfileWin.getElementById("febeProfileList").ensureIndexIsVisible(febeProfileCreated);
febeProfileIndex = febeProfileCreated;
febeProfileDestinationIsSelected = true;
febeProfileRestoreSanityCheck();
}//if
return true;
}//febeSetRestoreProfileHeader()
function febeProfileSelected(){
febeProfileIndex = febeProfileWin.getElementById("febeProfileList").selectedIndex;
if(febeProfileIndex == -1){return false;}
var item = febeProfileWin.getElementById("febeProfileList").selectedItem.label;
if(item == febeProfName ){
febeAlert(febeMsg[6]); // Can't be current profile
return false;
}//if
febeProfileWin.getElementById("febeDestinationProfileText").value = item;
var prefName = "extensions.febe.restoreToProfileName";
febePrefs.setCharPref(prefName,item);
febeProfileDestinationIsSelected = true;
febeProfileRestoreSanityCheck();
return true;
}//febeProfileSelected()
function febeGetProfileList(){
var profArray = [];
var profiles = febeProfileService.profiles;
while (profiles.hasMoreElements()) {
var profile = profiles.getNext().QueryInterface(Ci.nsIToolkitProfile);
profArray.push(profile);
}//while
return profArray;
}//febeGetProfileList(){
function febeCreateProfileInit(){
document.getElementById("febeProfileButtonBox").setAttribute("hidden","true");
document.getElementById("febeCreateProfileID").setAttribute("hidden","false");
document.getElementById("newprofileID").reset();
document.getElementById("newprofileID").focus();
document.getElementById("febeProfileList").disabled = true;
febeProfileCreated = 0;
febeProfileRestoreSanityCheck();
return true;
}//febeCreateProfileInit()
function febeCancelCreateProfile(){
document.getElementById("febeProfileButtonBox").setAttribute("hidden","false");
document.getElementById("febeCreateProfileID").setAttribute("hidden","true");
document.getElementById("newprofileID").focus();
document.getElementById("febeProfileList").disabled = false;
febeProfileRestoreSanityCheck();
return true;
}//febeCancelCreateProfile()
function febeCreateProfile(){
var newProfile = document.getElementById("newprofileID").value;
if(!febeCheckProfileName(newProfile)){return false;}
var dirService = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties);
var proot = dirService.get("DefProfRt", Ci.nsIFile);
var prName = "febeprof." + newProfile; // Use 'febeprof' as the salt value to easily identify which profiles FEBE creates
proot.append(prName);
try{
febeProfileService.createProfile(proot, null, newProfile);
febeProfileService.flush();
var tmp = febeMsg[288].replace("%PROFILE%",newProfile);
febeAlert(tmp);
febeCancelCreateProfile();
febeSetRestoreProfileHeader();
febeBuildProfileList();
}catch(e){
febeFatal(e,febeMsg[289]);
return false;
}//try
return true;
}//febeCreateProfile()
function febeCheckProfileName(profileNameToCheck){
// Check for emtpy profile name.
if (!/\S/.test(profileNameToCheck)){
febeAlert(febeMsg[290]);
return false;
}//if
// Check whether all characters in the profile name are allowed.
if (/([\\*:?<>|\/\"])/.test(profileNameToCheck)){
var tmp = febeMsg[291].replace("%BADCHAR%",[RegExp.$1]);
febeAlert(tmp);
return false;
}//if
// Check whether a profile with the same name already exists.
if (febeProfileExists(profileNameToCheck)){
febeAlert(febeMsg[292]);
return false;
}//if
// profileNameToCheck is valid.
return true;
}//febeCheckProfileName()
function febeProfileExists(aName){
var profiles = febeProfileService.profiles;
while (profiles.hasMoreElements()) {
var profile = profiles.getNext().QueryInterface(Ci.nsIToolkitProfile);
if (profile.name.toLowerCase() == aName.toLowerCase()){return true;}
febeProfileCreated++;
}//while
return false;
}//febeProfileExists()
function febeGetProfileBackup(which){
if(!febeInitDir()){return false;}
if(which == "local"){
febePathName = "";
var mask = "profileFx3{*}.fbu";
if(febePlatform == 3) mask = "*.fbu"; // Bug 444423
if(!febePickFile(mask,90)){return true};
var check1 = febePrName.indexOf("profileFx3{");
var check2 = febePrName.length - febePrName.lastIndexOf("}.fbu");
if(check1 != 0 || check2 != 5){
var tmp = "<style>color: purple; font-weight: bold; font-size: 12px;</style>"+febeMsg[103].replace("%FILE%","'"+febePrName+"'")+"\n";
tmp += "<style>color: red; font-weight: bold; font-size: 14px;</style>"+febeMsg[46];
febeAlert(tmp);
return false;
}//if
var prefName = "extensions.febe.restoreToProfilePath";
febePrefs.setCharPref(prefName,febePathName);
var prefName = "extensions.febe.restoreProfileFromBackupName";
febePrefs.setCharPref(prefName,febePrName);
febeIsOnlineBackup = false;
}else{
var date = Application.storage.get("created", "");
febePathName = Application.storage.get("location", "");
febePrName = Application.storage.get("boxname", "");
febeBUdate = new Date(parseInt(date));
var prefName = "extensions.febe.restoreToProfilePath";
febePrefs.setCharPref(prefName,febePathName);
var prefName = "extensions.febe.restoreProfileFromBackupName";
febePrefs.setCharPref(prefName,febePrName);
febeIsOnlineBackup = true;
}//if
febeSetRestoreProfileHeader();
febeProfileBackupIsSelected = true;
febeProfileRestoreSanityCheck();
return true;
}//febeGetProfileBackup()
function febeStartProfileRestoreCheck(){
var prefName = "extensions.febe.restoreToProfilePath";
var restorePath = febePrefs.getCharPref(prefName,febePathName);
if(restorePath == ""){
febeAlert(febeMsg[294]); // No backup file selected
return false;
}//if
febeProfileWin.getElementById("febeProfileList").selectedIndex = febeProfileIndex;
if(febeProfileWin.getElementById("febeProfileList").selectedIndex == -1){
febeAlert(febeMsg[48]); // No destination profile selected
return false;
}//if
febeStartProfileRestore(febeProfList[febeProfileIndex]);
return true;
}//febeStartProfileRestoreCheck()
function febeSwitchToProfile(profileName){
var newProfile = febeProfileService.getProfileByName(profileName);
febeProfileService.selectedProfile = newProfile;
febeProfileService.startWithLastProfile = true;
febeProfileService.flush();
return true;
}//febeSwitchToProfile(profileName)
function febeStartupOptions(){
var opt = febeProfileWin.getElementById("febeStartupOptionID").selectedIndex;
switch(opt){
case 0: // Use new/selected profile
var prefName = "extensions.febe.restoreToProfileName";
var profileName = febePrefs.getCharPref(prefName);
if(profileName == febeMsg[295]){ // No profile selected
febeAlert(febeMsg[303]);
break;
}//if
var newProfile = febeProfileService.getProfileByName(profileName);
febeProfileService.selectedProfile = newProfile;
febeProfileService.startWithLastProfile = true;
febeProfileService.flush();
febeShutdownRestart(profileName);
break;
case 1: // Use profile manager
febeProfileService.startWithLastProfile = false;
febeProfileService.flush();
febeShutdownRestart("");
break;
case 2: // Do nothing
var startupbox = febeProfileWin.getElementById("febeStartupBox");
startupbox.setAttribute("hidden", "true");
var buttonbox = febeProfileWin.getElementById("febeProfileButtonBox");
buttonbox.setAttribute("hidden", "false");
this.sizeToContent();
break;
}//switch
febeProfileRestoreSanityCheck();
return true;
}//febeStartupOptions()
function febeShutdownRestart(profileName){
febeSetMsgs();
if(profileName != ""){
var tmp = febeMsg[296] = febeMsg[296].replace(/%PROFILE%/,"'"+profileName+"'"); // New porofile
}else{
var tmp = febeMsg[297]; // Profile Manager
}//if
var app = febeGetEnvironmentVariableValue("MOZ_CRASHREPORTER_RESTART_ARG_0");
if(app){
tmp += "\n\n<style>color: red; font-weight: bold; font-size: 15px;</style>"+febeMsg[298]+"\n";
}//if
var OK = febeConfirm(tmp);
if(OK && app){
var Fx = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
Fx.initWithPath(app);
var args = [];
if(profileName != ""){ // Start with profile
args[0] = "-P";
args[1] = profileName;
args[2] = "-no-remote";
}else{
args[0] = "-no-remote";
args[1] = "-P";
}//if
var process = Components.classes["@mozilla.org/process/util;1"]
.getService(Components.interfaces.nsIProcess);
process.init(Fx);
process.run(false,args,args.length);
window.setTimeout(febeQuitFx,1000); // Give it a second to catch up, then shutdown
}else{
var startupbox = febeProfileWin.getElementById("febeStartupBox");
startupbox.setAttribute("hidden", "true");
var buttonbox = febeProfileWin.getElementById("febeProfileButtonBox");
buttonbox.setAttribute("hidden", "false");
this.sizeToContent();
}//if
febeProfileRestoreSanityCheck();
return true;
}//febeShutdownRestart()
function febeStartupButton(){
var startupbox = febeProfileWin.getElementById("febeStartupBox");
startupbox.setAttribute("hidden", "false");
var buttonbox = febeProfileWin.getElementById("febeProfileButtonBox");
buttonbox.setAttribute("hidden", "true");
this.sizeToContent();
return true;
}//febeStartupButton()
function febeQuitFx(){
Application.storage.set("shuttingDownAfterProfileRestore", true);
goQuitApplication(); // Use the shutdown routine in chrome/global/globalOverlay.js
}//febeQuitFx()
function febeRestoreProfile(){
// Open restore profile window
febeGetPlatform();
if(febePlatform == 3){ // No modal windows for Mac
var opts = "chrome,alwaysRaised,centerscreen,resizable,dialog='no'"
}else{
var opts = "chrome,alwaysRaised,centerscreen,resizable,dialog='no'"
}//if
febeWin = window.open("chrome://febe/content/febeProfile.xul", "FEBE", opts);
return true;
}//febeRestoreProfile()
function febeStartProfileRestore(profileObj){
if(!febeInitDir()){return false;}
var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
var febeWin = wm.getMostRecentWindow("febe:restoreProfile");
var prefName = "extensions.febe.restoreToProfilePath";
febePathName = febePrefs.getCharPref(prefName); // Full path to backed up profile
if(!febeIsOnlineBackup){febeGetBuDate(febePathName);}
if(febeConfirmRestore(75,febeBUdate)){
if(!febeInitDir()){return false;}
var buttonbox = febeWin.document.getElementById("febeProfileButtonBox");
buttonbox.setAttribute("hidden", "true");
var progressbox = febeWin.document.getElementById("febeProfileRestoreBox");
progressbox.setAttribute("hidden", "false");
febex = profileObj;
setTimeout("febeStartProfileRestore2()",500); // Let the browser catch up
}else{
febeAlert(febeMsg[46]);
}//if
return true;
}//febeStartProfileRestore()
function febeStartProfileRestore2(){
// Remove contents of destination profile
var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
var febeWin = wm.getMostRecentWindow("febe:restoreProfile");
var destProfile = febex.rootDir.path;
var pDestDir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
pDestDir.initWithPath(destProfile);
var entries = pDestDir.directoryEntries;
while(entries.hasMoreElements()){
var entry = entries.getNext();
entry.QueryInterface(Ci.nsILocalFile);
entry.remove(true);
}//while
var zipFile = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
zipFile.initWithPath(febePathName);
var sourceDir = zipFile.parent.path;
var destDir = destProfile;
var zipName = zipFile.leafName
var OK = new Boolean(true);
OK = febeMainWindow.febeUnzip(sourceDir,destDir,zipName);
var progressbox = febeWin.document.getElementById("febeProfileRestoreBox");
progressbox.setAttribute("hidden", "true");
if(OK){
febeChmod(destDir);
febeAlert(febeMsg[91]);
}else{
febeAlert(febeMsg[46]);
}//if
var buttonbox = febeWin.document.getElementById("febeProfileButtonBox");
buttonbox.setAttribute("hidden", "false");
febeWin.sizeToContent();
febeProfileRestoreSanityCheck();
return true;
}//function febeStartProfileRestore2(){
function febeProfileRestoreSanityCheck(){
// Don't enable the ""start restore" button unless everything is ready to go
var spb = febeProfileWin.getElementById("startProfileRestoreID");
if(febeProfileBackupIsSelected && febeProfileDestinationIsSelected){
spb.disabled = false;
}else{
spb.disabled = true;
}//if
var obu = febeProfileWin.getElementById("onlinerestorebuttonID");
var boxEnabled = febePrefs.getBoolPref("extensions.febe.boxnet.enabled");
obu.setAttribute("disabled",!boxEnabled);
return true;
}//febeProfileRestoreSanityCheck()